import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap

class OpenFileDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()
        
    def init_ui(self):
        layout = QVBoxLayout()
        
        self.info_label = QLabel('选择文件后，文件路径将显示在这里')
        self.info_label.setAlignment(Qt.AlignCenter)
        self.info_label.setWordWrap(True)
        
        open_btn = QPushButton('打开文件')
        open_btn.clicked.connect(self.open_file)
        
        layout.addWidget(self.info_label)
        layout.addWidget(open_btn)
        self.setLayout(layout)
        self.setWindowTitle('打开文件对话框演示')
        
    def open_file(self):
        from PyQt5.QtWidgets import QFileDialog
        
        # 基本用法
        file_name, selected_filter = QFileDialog.getOpenFileName(
            self,
            "选择文件",  # 对话框标题
            "",         # 初始目录（空表示当前目录）
            "所有文件 (*);;文本文件 (*.txt);;图片文件 (*.png *.jpg *.bmp)"  # 文件过滤器
        )
        
        if file_name:
            self.info_label.setText(f"选择的文件: {file_name}\n过滤器: {selected_filter}")
        else:
            self.info_label.setText("用户取消了选择")
            
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = OpenFileDemo()
    window.show()
    sys.exit(app.exec_())